/*HEY HELLO*/
package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import model.CaixaVenda;
import utils.Conexao;
import model.Funcionario;


public class CaixaVendaDAO {
   Funcionario umFuncionario;
        DAOFactory daoFactory = new DAOFactory();
        FuncionarioDAO funcionarioDAO = daoFactory.getFuncionarioDAO();

    
    private int obterNovoCodigo() {
      int proximo=0;
      Connection db = Conexao.getConnection();
      ResultSet rs;
      try {
          PreparedStatement st =
             db.prepareStatement("select max(codigo) from caixavenda");
          rs = st.executeQuery();
          rs.next();
          if (rs.getObject(1)==null) {
              proximo = 1;
          } else {
              proximo = rs.getInt(1)+ 1;
          }
          st.close();
          rs.close();
      } catch (SQLException ex) {
          ex.printStackTrace();
      }
      return proximo;
    }       
         
    public boolean persistir(CaixaVenda umCaixaVenda) {
        try {
           Connection db = Conexao.getConnection();
           if (umCaixaVenda.isNovo()) {
               umCaixaVenda.setCodigo(obterNovoCodigo());
               PreparedStatement st =
                   db.prepareStatement("insert into caixavenda " +
                     "(codigo,diavenda,mesvenda,anovenda,valorvenda,valordesconto," +
                     "apagar,formapagto,cod_funcionario) values (?,?,?,?,?,?,?,?,?)");
               st.setInt(1, umCaixaVenda.getCodigo());
               st.setInt(2, umCaixaVenda.getDiaVenda());
               st.setString(3, umCaixaVenda.getMesVenda());
               st.setInt(4, umCaixaVenda.getAnoVenda());
               st.setDouble(5, umCaixaVenda.getValorVenda());
               st.setDouble(6, umCaixaVenda.getValorDesconto());
               st.setDouble(7, umCaixaVenda.getaPagto());
               st.setString(8, umCaixaVenda.getFormaPagto());
               st.setInt(9, umCaixaVenda.getFuncionario().getCodigoFuncionario());
               st.executeUpdate();
               st.close();
               umCaixaVenda.setNovo(false);
           }
           return true;
        } catch (SQLException ex) {
           ex.printStackTrace();
           return false;
        }
    }
    
    public boolean excluir (CaixaVenda umCaixaVenda) {
        return true;
    } 
    
    public List<CaixaVenda> listarTodos() {
        return null;
    }    
}
